package org.example.B_100;

import java.util.Scanner;

/**
 * IPv4转换成整数
 */
public class IPV4ToInter {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(getResult(sc.nextLine()));
    }

    public static String getResult(String s){
        String[] ip = s.split("#");

        if (ip.length != 4){
            return "invalid IP";
        }

        if (!isValid(ip[0],1,128)
                || !isValid(ip[1],0,255)
                || !isValid(ip[2],0,255)
                || !isValid(ip[3],0,255)){
            return "invalid IP";
        }

        return Long.parseLong(getHexString(ip[0]) + getHexString(ip[0])
        + getHexString(ip[0]) + getHexString(ip[0]),16) + "";

    }

    public static String getHexString(String num){
        String hexStr = Integer.toHexString(Integer.parseInt(num));
        //补足前导0
        if (hexStr.length() < 2){
            hexStr = "0" + hexStr;
        }
        return hexStr;
    }

    /**
     * 组成ip是否合法
     * @param s
     * @param from
     * @param to
     * @return
     */
    public static boolean isValid(String s,int from ,int to){
        //如果包含非数字字符,则不合法
        if (!s.matches("^\\d+$")) return false;

        //如果前序包含0，则不合法，如012,这里传入012，转换成整数之后将变成12，再与原本字符串进行对比就可以判断出是否为原样。
        int num = Integer.parseInt(s);
        if (!s.equals(num + "")) return false;

        //如果不在规定范围，则不合法
        return num >= from && num <= to;
    }
}
